package com.springbook;

import java.util.List;
import java.util.ArrayList;
import java.util.Iterator;

public class ArrayListRentABike implements RentABike {
   private String storeName;
   final List bikes = new ArrayList();

   public void setStoreName(String name) {
      this.storeName = name;
   }

   public String getStoreName() {
      return storeName;
   }

   private void initBikes() {
      bikes.add(new Bike("Shimano", "Roadmaster", 20, "11111", 15,
            "Fair"));
      bikes.add(new Bike("Cannondale", "F2000 XTR", 18, "22222",12,
            "Excellent"));
      bikes.add(new Bike("Trek","6000", 19, "33333", 12.4,
            "Fair"));
   }

   public ArrayListRentABike() {
     initBikes();
   }

   public ArrayListRentABike(String storeName) {
      this.storeName = storeName;
      initBikes();
   }

   public String toString() { return "com.springbook.RentABike: " + storeName; }

   public List getBikes() { return bikes; }

   public Bike getBike(String serialNo) {
      Iterator iter = bikes.iterator();
      while(iter.hasNext()) {
         Bike bike = (Bike)iter.next();
         if(serialNo.equals(bike.getSerialNo())) return bike;

      }

      return null;
   }

   public void saveBike(Bike bike) {
      deleteIfContains(bike);
      bikes.add(bike);
   }

   public void deleteBike(Bike bike) {
      deleteIfContains(bike);
   }

   private void deleteIfContains(Bike bike) {
      Iterator iter = bikes.iterator();
      while(iter.hasNext()) {
         Bike comp = (Bike)iter.next();
         if(comp.getManufacturer().equals(bike.getManufacturer()) && comp.getModel().equals(bike.getModel())) {
            bikes.remove(comp);
            return;
         }
      }
   }
}
